﻿
//webservice请求
function GetWebService(url, param, callback, isJson) {
    if (isJson) {
        $.ajax({
            data: this.GetJsonParam(param),
            url: url,
            type: "POST",
            contentType: "application/json;utf-8",
            dataType: 'json',
            cache: false,
            success: function (json) {
                callback(json.d);
            },
            complete: function () {
            },
            error: function (xmlHttpRequest, textStatus, errorThrown) {
                //alert("加载页面:" + "出错！" + xmlHttpRequest.responseText + textStatus + errorThrown);
            }
        });
    }
    else {
        $.ajax({
            data: param,
            url: url,
            type: "POST",
            cache: false,
            success: function (json) {
                callback(json);
            },
            complete: function () {
            },
            error: function (xmlHttpRequest, textStatus, errorThrown) {
                //alert("加载页面:" + url + "出错！" + xmlHttpRequest.responseText);
            }
        });
    }
}

//获取Json参数
function GetJsonParam(a) {
    if (a == null) {
        return "{}";
    }
    var s = [];
    // 如果传入的值是一个数组, 或者是表单元素中的一个数组参数
    if (a.constructor == Array || a.jquery)
    // 序列化表单元素
        jQuery.each(a, function () {
            s.push(encodeURIComponent(this.name) + ":\"" + encodeURIComponent(this.value) + "\"");
        });

    // 另外，如果对象是键/值映射的情况时
    else
    //序列化键和值
        for (var j in a)
        // 如果值是数组就重复填写键名
            if (a[j] && a[j].constructor == Array)
                jQuery.each(a[j], function () {
                    s.push(encodeURIComponent(j) + ":\"" + encodeURIComponent(this) + "\"");
                });
            else
                s.push(encodeURIComponent(j) + ":\"" + encodeURIComponent(jQuery.isFunction(a[j]) ? a[j]() : a[j]) + "\"");

    // 返回序列化的结果
    return "{" + s.join(",") + "}";
}